透過非同步方式進行Master與Replica進行資料同步,由Replica進行設定Master的IP與Port。
# 預設
# replicaof <masterip> <masterport>
# 需與Master 127.0.0.1 6379 進行同步
replicaof 127.0.0.1 6379
當同步Master有設定"requirepass"時,需要一起綁定驗證密碼。
# 預設
# masterauth <master-password>
Redis6.0 支援設定同步Master中設定的用戶名。
# 預設
# masteruser <username>
當Master與Replica正在同步資料時或是失去中間的連線時,Replica是否還可以提供給用戶端連線使用,即便資料可能會與Master不一致。
# 預設
# 可以提供給用戶端連線使用
replica-serve-stale-data yes
Replica是否只允許進行讀取操作而不能寫入。
# 預設
# 只讀不可以寫入
replica-read-only yes
是否需要開啟無磁碟化同步資料,減少使用磁碟避免因為IO問題造成效能瓶頸。
# 預設
# 預設no則快照資料會先落地到Master的dump.rdb後在同步到Replica。
repl-diskless-sync no
# 如果是yes,則資料在快照時不會先落地到Master的磁碟,而直接同步到Replica,需搭配repl-diskless-sync-delay一起配置使用。
repl-diskless-sync yes
Master快照同步前等待與Replica進行連線,以利後續同步,但時間越長代表Master與Replica差異越大。
# 預設
repl-diskless-sync-delay 5
Replica載入資料配置。
# 預設
# 資料會先同步到rdb後再處道道記憶體
repl-diskless-load disabled
# 記憶體資料為空時,會直接處理到記憶體內,不用寫入rdb。不為空則需要寫入rdb後處理到記憶體中
repl-diskless-load on-empty-db
# 直接處理到記憶體中,不寫入rdb檔案,並且保留了原來的資料,實際上記憶體會有兩份資料,當記憶體不足時,會out of memory的問題
repl-diskless-load swapdb
心跳多久確認一次。
# 預設
# 10秒一次PING
# repl-ping-replica-period 10
設定timeout時間,注意不可以設定小於repl-ping-replica-period,否則很容易因為網路延遲造成中斷。
# 預設
# 60秒
# repl-timeout 60
是否需要即時傳送Master與Replica同步資料。
# 預設
# Linux核心將使用大概40毫秒的時候快取資料,一次性將盡可能多的資料傳送出去
repl-disable-tcp-nodelay no
# 有資料就馬上送,不管封包大小
repl-disable-tcp-nodelay yes
設定aster記憶體緩衝區大小給同步Replica使用。
# 預設
# repl-backlog-size 1mb
設定多久沒有Replica則釋放記憶體緩衝區。
# 預設
# repl-backlog-ttl 36000
# 永遠不釋放
repl-backlog-ttl 0
設定Replica優先權,越小優先權越大。
# 預設
replica-priority 100
# 不移轉
replica-priority 0
Replica是否要宣告排除,此設定不會影響replica-priority。
# 預設
# replica-announced yes
設定至少要有多少個Replica與延遲小於多少時間才可以讓Master提供用戶端進行操作。
# 預設
# min-replicas-to-write 3
# min-replicas-max-lag 10
宣告排除的Replica Ip和Port。
# 預設
# replica-announce-ip 5.5.5.5
# replica-announce-port 1234